package com.ahp.dao;


import java.io.Serializable;
import java.util.List;
import java.util.Map;

import com.ahp.util.PageList;
import com.ahp.util.Pages;


/**
 * 通用DAO的接口
 * 定义通用的CRUD操作
 * @param  bean对象
 * @param  bean对象的主键标识符
 * 
 */
public interface GenericDAO <T, PK extends Serializable> {

    /**
     * 获得所有对象集合
     * @return List<T>
     */
    public List<T> getAll();


    /**
     * 通过主键标识查找某个对象判断对象是否存在
     * @param PK id 主键编号
     * @return true 对象存在,false 对象不存在
     */
    public boolean exists(PK id);

    /**
     * 通过数据查询相关数据
     * @param Map <String s1,String s2> 查询参数和参数对应的数据,s1查询参数,s2查询所需的数据
     * @return List<T> list里面存放bean对象
     */
    public List<T> findByProperty(Map<String, Object> queryParams);
    
    /**
     * hql查询
     * @param hql
     * @param args
     * @return
     * @date:Sep 6, 2009
     * @author: 李晓娜
     */
    public List<T> queryInfo(String hql, final Object... args);
    
    /**
     * 分页
     * @param pages
     * @param hql
     * @param args
     * @return
     * @date:Sep 6, 2009
     * @author: 李晓娜
     */
    public PageList pageQuery(Pages pages, String hql, final Object... args);
    
}